signature IEEE_REAL = sig
    exception Unordered
    datatype real_order = LESS | EQUAL | GREATER | UNORDERED
    datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL
    datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO
    (* val setRoundingMode : rounding_mode -> unit *)
    (* val getRoundingMode : unit -> rounding_mode *)
    type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int }
    (* val toString : decimal_approx -> string *)
    (* val scan : (char, 'a) StringCvt.reader -> (decimal_approx, 'a) StringCvt.reader *)
    (* val fromString : string -> decimal_approx option *)
end
structure IEEEReal : IEEE_REAL = struct
exception Unordered
datatype real_order = LESS | EQUAL | GREATER | UNORDERED
datatype float_class = NAN | INF | ZERO | NORMAL | SUBNORMAL
datatype rounding_mode = TO_NEAREST | TO_NEGINF | TO_POSINF | TO_ZERO
type decimal_approx = { class : float_class, sign : bool, digits : int list, exp : int }
end;
